#ifndef OPERATIONS_USER_SERVICE_H
#define OPERATIONS_USER_SERVICE_H

#include <QWidget>
#include <QMessageBox>
#include <QMap>
#include <QVariant>
#include "api.h"

QT_BEGIN_NAMESPACE
namespace Ui { class operations_user_service; }
QT_END_NAMESPACE

class operations_user_service : public QWidget
{
    Q_OBJECT

public:
    explicit operations_user_service(QWidget *parent = nullptr);
    ~operations_user_service();

private slots:
    void on_searchButton_clicked();
    void on_refreshButton_clicked();
    void on_firstPageBtn_clicked();
    void on_prevPageBtn_clicked();
    void on_nextPageBtn_clicked();
    void on_lastPageBtn_clicked();
    void on_statusComboBox_currentTextChanged(const QString &text);
    void on_searchEdit_returnPressed();
    void on_userTable_cellClicked(int row, int column);
    void on_userTable_cellDoubleClicked(int row, int column);

private:
    Ui::operations_user_service *ui;
    
    // 数据库相关 - 使用Api单例
    Api* m_api;
    bool connectToDatabase();
    
    // 分页相关
    int currentPage;
    int totalPages;
    int pageSize;
    int totalRecords;
    
    // 数据操作
    void loadUserData();
    void refreshData();
    void updatePageInfo();
    void updateStatistics();
    void clearTable();
    
    // 搜索筛选
    void applyFilters();
    QString buildWhereClause();
    QString currentSearchText;
    
    // 用户操作
    void toggleUserStatus(int userId, const QString &currentStatus);
    void viewUserDetails(int userId);
    void freezeUser(int userId);
    void unfreezeUser(int userId);
    
    // 数据保存
    bool saveUserData();
    void saveAndRefreshData();
    
    // 表格操作
    void populateUserTable(const QList<QMap<QString, QVariant>> &userData);
    void addTableRow(int row, const QMap<QString, QVariant> &userData);
    void updateTableButtons();
    
    // 工具函数
    QString getStatusColor(const QString &status);
    QString getAgeRange(int age);
    void showMessage(const QString &message, const QString &title = tr("提示"));
    bool confirmAction(const QString &message, const QString &title = tr("确认"));
    
    // UI更新
    void updateButtonStates();
    void updateSearchControls();
};

#endif // OPERATIONS_USER_SERVICE_H
